xend: NUMA: fix division by zero on unpopulated nodes
authorKeir Fraser <keir.fraser@citrix.com>
Sun, 17 Jan 2010 18:01:08 +0000 (18:01 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Sun, 17 Jan 2010 18:01:08 +0000 (18:01 +0000)
nodes without memory will currently be disabled by also moving the
physical cores connected to them to other nodes. This leads to nodes
without CPUs and thus to a division by zero in the node allocation
algorithm.  Attached patch fixes this by checking for 0 before the
division. This fixes domain creation on boxes with memory-less nodes.

Signed-off-by: Andre Przywara <andre.przywara@amd.com>
tools/python/xen/xend/XendDomainInfo.py

index 6c23fc9be70c321033c32f528dad043bcdf5d4ef..21fb719891e90c13935785415ec272ec36316eb3 100644 (file)
@@ -2709,9 +2709,12 @@ class XendDomainInfo:
                                     nodeload[i] += 1
                                     break
                 for i in range(0, nr_nodes):
-                    nodeload[i] = int(nodeload[i] * 16 / len(info['node_to_cpu'][i]))
-                    if len(info['node_to_cpu'][i]) == 0 or i not in node_list:
+                    if len(info['node_to_cpu'][i]) == 0:
                         nodeload[i] += 8
+                    else:
+                        nodeload[i] = int(nodeload[i] * 16 / len(info['node_to_cpu'][i]))
+                        if i not in node_list:
+                            nodeload[i] += 8
                 return map(lambda x: x[0], sorted(enumerate(nodeload), key=lambda x:x[1]))
 
             info = xc.physinfo()